package com.huike.report.services;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huike.clues.domain.vo.ClueReportVo;

import com.huike.common.core.domain.MPentity.Contract;
import com.huike.contract.domain.TbContract;
import com.huike.report.domain.DTO.ContractpageDTO;
import com.huike.report.domain.DTO.TbActivityDTO;
import com.huike.report.domain.DTO.TbCluePageDTO;
import com.huike.report.domain.vo.ActivityStatisticsVo;
import com.huike.report.domain.vo.LineChartVo;
import com.huike.report.domain.vo.VulnerabilityMapVo;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * @Description TODO
 * @Author 小不夜侯
 * @Date 2023-08-29 9:11
 */
public interface SysReportservices extends IService<Contract> {

    /**
     * 客户统计明细列表
     * @param contractpageDTO
     * @return
     */
    List<TbContract> selectpage1(ContractpageDTO contractpageDTO);
    /**
     * 统计新增客户
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo countupdataClient(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     * 销售统计归属人报表
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> ownerShipStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 销售统计归属渠道明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> channelStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 销售统计归属部门明细列表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> deptStatisticsList(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 客户统计学科分布统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> subjectStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    /**
     * 销售统计报表
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    LineChartVo salesStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    VulnerabilityMapVo getVulnerabilityMap(LocalDate beginCreateTime, LocalDate endCreateTime);

    List<ClueReportVo> cluesStatisticsList(TbCluePageDTO tbCluePageDTO);

    LineChartVo cluesStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);

    List<ActivityStatisticsVo> activityStatisticsList(TbActivityDTO tbActivityDTO);

    /**
     * 渠道统计
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> chanelStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);
    /**
     *渠道统计-活动统计
     *
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<Map<String, Object>> activityStatistics(LocalDate beginCreateTime, LocalDate endCreateTime);
}
